package com.example.munidingwei

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.util.Log

/**
 * 服务重启接收器
 * 当服务被系统杀死后，尝试重新启动
 */
class ServiceRestartReceiver : BroadcastReceiver() {
    
    companion object {
        private const val TAG = "ServiceRestartReceiver"
        const val ACTION_RESTART_SERVICE = "com.example.munidingwei.RESTART_SERVICE"
    }
    
    override fun onReceive(context: Context, intent: Intent) {
        when (intent.action) {
            ACTION_RESTART_SERVICE -> {
                Log.d(TAG, "===== 收到服务重启请求 =====")
                restartService(context)
            }
        }
    }
    
    /**
     * 重启前台服务
     */
    private fun restartService(context: Context) {
        try {
            val prefs = context.getSharedPreferences("app_prefs", Context.MODE_PRIVATE)
            
            // 检查是否需要重启服务
            val shouldRestart = prefs.getBoolean("service_was_running", false)
            if (!shouldRestart) {
                Log.d(TAG, "服务之前未运行，不需要重启")
                return
            }
            
            // 读取上次的位置信息
            val latitude = prefs.getFloat("last_latitude", 0f).toDouble()
            val longitude = prefs.getFloat("last_longitude", 0f).toDouble()
            val accuracy = prefs.getFloat("last_accuracy", 5f)
            
            if (latitude != 0.0 && longitude != 0.0) {
                Log.d(TAG, "重启服务，恢复位置: ($latitude, $longitude)")
                
                // 延迟一小段时间后启动，避免立即重启被系统拦截
                android.os.Handler(android.os.Looper.getMainLooper()).postDelayed({
                    LocationForegroundService.start(context, latitude, longitude, accuracy)
                    Log.d(TAG, "✅ 服务已重新启动")
                }, 1000)
            } else {
                Log.w(TAG, "⚠️ 没有保存的位置信息，无法重启服务")
            }
            
        } catch (e: Exception) {
            Log.e(TAG, "❌ 重启服务失败: ${e.message}", e)
        }
    }
}


